From 352590cf9f2cc6d9d096652905c56f2704037e35 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Thu, 28 Dec 2017 21:12:03 +0100 Subject: [PATCH] gl driver: Remove vao API Unused. --- gsk/gl/gskgldriver.c | 243 +----------------------------------- gsk/gl/gskgldriverprivate.h | 15 --- 2 files changed, 2 insertions(+), 256 deletions(-) diff --git a/gsk/gl/gskgldriver.c b/gsk/gl/gskgldriver.c index 999b3af2cf..91e48e09fd 100644 --- a/gsk/gl/gskgldriver.c +++ b/gsk/gl/gskgldriver.c @@ -21,17 +21,6 @@ typedef struct { guint permanent : 1; } Texture; -typedef struct { - GLuint vao_id; - GLuint buffer_id; - GLuint position_id; - GLuint uv_id; - GskQuadVertex *quads; - int n_quads; - guint in_use : 1; - guint permanent : 1; -} Vao; - typedef struct { GLuint fbo_id; GLuint depth_stencil_id; @@ -52,11 +41,9 @@ struct _GskGLDriver Fbo default_fbo; GHashTable *textures; - GHashTable *vaos; const Texture *bound_source_texture; const Texture *bound_mask_texture; - const Vao *bound_vao; const Fbo *bound_fbo; int max_texture_size; @@ -105,23 +92,6 @@ fbo_clear (gpointer data) glDeleteFramebuffers (1, &f->fbo_id); } -static Vao * -vao_new (void) -{ - return g_slice_new0 (Vao); -} - -static void -vao_free (gpointer data) -{ - Vao *v = data; - - g_free (v->quads); - glDeleteBuffers (1, &v->buffer_id); - glDeleteVertexArrays (1, &v->vao_id); - g_slice_free (Vao, v); -} - static void gsk_gl_driver_finalize (GObject *gobject) { @@ -130,7 +100,6 @@ gsk_gl_driver_finalize (GObject *gobject) gdk_gl_context_make_current (self->gl_context); g_clear_pointer (&self->textures, g_hash_table_unref); - g_clear_pointer (&self->vaos, g_hash_table_unref); g_clear_object (&self->profiler); if (self->gl_context == gdk_gl_context_get_current ()) @@ -200,7 +169,6 @@ static void gsk_gl_driver_init (GskGLDriver *self) { self->textures = g_hash_table_new_full (NULL, NULL, NULL, texture_free); - self->vaos = g_hash_table_new_full (NULL, NULL, NULL, vao_free); self->max_texture_size = -1; @@ -270,7 +238,6 @@ gsk_gl_driver_end_frame (GskGLDriver *self) self->bound_source_texture = NULL; self->bound_mask_texture = NULL; - self->bound_vao = NULL; self->bound_fbo = NULL; self->default_fbo.fbo_id = 0; @@ -283,9 +250,8 @@ gsk_gl_driver_end_frame (GskGLDriver *self) gsk_profiler_counter_get (self->profiler, self->counters.reused_textures), gsk_profiler_counter_get (self->profiler, self->counters.surface_uploads))); GSK_NOTE (OPENGL, - g_print ("*** Frame end: textures=%d, vaos=%d\n", - g_hash_table_size (self->textures), - g_hash_table_size (self->vaos))); + g_print ("*** Frame end: textures=%d\n", + g_hash_table_size (self->textures))); self->in_frame = FALSE; } @@ -323,32 +289,6 @@ gsk_gl_driver_collect_textures (GskGLDriver *driver) return old_size - g_hash_table_size (driver->textures); } -int -gsk_gl_driver_collect_vaos (GskGLDriver *driver) -{ - GHashTableIter iter; - gpointer value_p = NULL; - int old_size; - - g_return_val_if_fail (GSK_IS_GL_DRIVER (driver), 0); - g_return_val_if_fail (!driver->in_frame, 0); - - old_size = g_hash_table_size (driver->vaos); - - g_hash_table_iter_init (&iter, driver->vaos); - while (g_hash_table_iter_next (&iter, NULL, &value_p)) - { - Vao *v = value_p; - - if (v->in_use) - v->in_use = FALSE; - else - g_hash_table_iter_remove (&iter); - } - - return old_size - g_hash_table_size (driver->vaos); -} - int gsk_gl_driver_get_max_texture_size (GskGLDriver *driver) { @@ -375,18 +315,6 @@ gsk_gl_driver_get_texture (GskGLDriver *driver, return NULL; } -static Vao * -gsk_gl_driver_get_vao (GskGLDriver *driver, - int vao_id) -{ - Vao *v; - - if (g_hash_table_lookup_extended (driver->vaos, GINT_TO_POINTER (vao_id), NULL, (gpointer *) &v)) - return v; - - return NULL; -} - static Fbo * gsk_gl_driver_get_fbo (GskGLDriver *driver, int texture_id) @@ -542,133 +470,6 @@ gsk_gl_driver_create_texture (GskGLDriver *driver, return t->texture_id; } -static Vao * -find_vao (GHashTable *vaos, - int position_id, - int uv_id, - int n_quads, - GskQuadVertex *quads) -{ - GHashTableIter iter; - gpointer value_p = NULL; - - g_hash_table_iter_init (&iter, vaos); - while (g_hash_table_iter_next (&iter, NULL, &value_p)) - { - Vao *v = value_p; - - if (v->position_id != position_id || v->uv_id != uv_id) - continue; - - if (v->n_quads != n_quads) - continue; - - if (memcmp (v->quads, quads, sizeof (GskQuadVertex) * n_quads) == 0) - return v; - } - - return NULL; -} - -void -gsk_gl_driver_create_permanent_vao_for_quad (GskGLDriver *driver, - int n_vertices, - const GskQuadVertex *quads, - int *out_vao_id, - int *out_vao_buffer_id) -{ - GLuint vao_id, buffer_id; - - glGenVertexArrays (1, &vao_id); - glBindVertexArray (vao_id); - - glGenBuffers (1, &buffer_id); - glBindBuffer (GL_ARRAY_BUFFER, buffer_id); - glBufferData (GL_ARRAY_BUFFER, sizeof (GskQuadVertex) * n_vertices, quads, GL_STATIC_DRAW); - - glBindBuffer (GL_ARRAY_BUFFER, 0); - glBindVertexArray (0); - - *out_vao_id = buffer_id; - *out_vao_buffer_id = vao_id; -} - -int -gsk_gl_driver_create_vao_for_quad (GskGLDriver *driver, - int position_id, - int uv_id, - int n_vertices, - GskQuadVertex *quads) - -{ - GLuint vao_id, buffer_id; - Vao *v; - - g_return_val_if_fail (GSK_IS_GL_DRIVER (driver), -1); - g_return_val_if_fail (driver->in_frame, -1); - - v = find_vao (driver->vaos, position_id, uv_id, n_vertices, quads); - if (v != NULL && !v->in_use) - { - GSK_NOTE (OPENGL, g_print ("Reusing VAO(%d)\n", v->vao_id)); - v->in_use = TRUE; - return v->vao_id; - } - - glGenVertexArrays (1, &vao_id); - glBindVertexArray (vao_id); - - glGenBuffers (1, &buffer_id); - glBindBuffer (GL_ARRAY_BUFFER, buffer_id); - glBufferData (GL_ARRAY_BUFFER, sizeof (GskQuadVertex) * n_vertices, quads, GL_STATIC_DRAW); - - if (position_id != -1) - { - glEnableVertexAttribArray (position_id); - glVertexAttribPointer (position_id, 2, GL_FLOAT, GL_FALSE, - sizeof (GskQuadVertex), - (void *) G_STRUCT_OFFSET (GskQuadVertex, position)); - } - - if (uv_id != -1) - { - glEnableVertexAttribArray (uv_id); - glVertexAttribPointer (uv_id, 2, GL_FLOAT, GL_FALSE, - sizeof (GskQuadVertex), - (void *) G_STRUCT_OFFSET (GskQuadVertex, uv)); - } - - glBindBuffer (GL_ARRAY_BUFFER, 0); - glBindVertexArray (0); - - v = vao_new (); - v->vao_id = vao_id; - v->buffer_id = buffer_id; - v->position_id = position_id; - v->uv_id = uv_id; - v->n_quads = n_vertices; - v->quads = g_memdup (quads, sizeof (GskQuadVertex) * n_vertices); - v->in_use = TRUE; - g_hash_table_insert (driver->vaos, GINT_TO_POINTER (vao_id), v); - -#ifdef G_ENABLE_DEBUG - if (GSK_DEBUG_CHECK (OPENGL)) - { - int i; - g_print ("New VAO(%d) for quad[%d] : {\n", v->vao_id, n_vertices); - for (i = 0; i < n_vertices; i++) - { - g_print (" { x:%.2f, y:%.2f } { u:%.2f, v:%.2f }\n", - quads[i].position[0], quads[i].position[1], - quads[i].uv[0], quads[i].uv[1]); - } - g_print ("}\n"); - } -#endif - - return vao_id; -} - int gsk_gl_driver_create_render_target (GskGLDriver *driver, int texture_id, @@ -782,37 +583,6 @@ gsk_gl_driver_bind_mask_texture (GskGLDriver *driver, } } -void -gsk_gl_driver_bind_vao (GskGLDriver *driver, - int vao_id) -{ - Vao *v; - - g_return_if_fail (GSK_IS_GL_DRIVER (driver)); - g_return_if_fail (driver->in_frame); - - v = gsk_gl_driver_get_vao (driver, vao_id); - if (v == NULL) - { - g_critical ("No VAO %d found.", vao_id); - return; - } - - if (driver->bound_vao != v) - { - glBindVertexArray (v->vao_id); - glBindBuffer (GL_ARRAY_BUFFER, v->buffer_id); - - if (v->position_id != -1) - glEnableVertexAttribArray (v->position_id); - - if (v->uv_id != -1) - glEnableVertexAttribArray (v->uv_id); - - driver->bound_vao = v; - } -} - gboolean gsk_gl_driver_bind_render_target (GskGLDriver *driver, int texture_id) @@ -864,15 +634,6 @@ gsk_gl_driver_destroy_texture (GskGLDriver *driver, g_hash_table_remove (driver->textures, GINT_TO_POINTER (texture_id)); } -void -gsk_gl_driver_destroy_vao (GskGLDriver *driver, - int vao_id) -{ - g_return_if_fail (GSK_IS_GL_DRIVER (driver)); - - g_hash_table_remove (driver->vaos, GINT_TO_POINTER (vao_id)); -} - static void gsk_gl_driver_set_texture_parameters (GskGLDriver *driver, int min_filter, diff --git a/gsk/gl/gskgldriverprivate.h b/gsk/gl/gskgldriverprivate.h index f5f99864de..35cf1ceea1 100644 --- a/gsk/gl/gskgldriverprivate.h +++ b/gsk/gl/gskgldriverprivate.h @@ -33,16 +33,6 @@ int gsk_gl_driver_create_permanent_texture (GskGLDriver *driver int gsk_gl_driver_create_texture (GskGLDriver *driver, float width, float height); -int gsk_gl_driver_create_vao_for_quad (GskGLDriver *driver, - int position_id, - int uv_id, - int n_vertices, - GskQuadVertex *vertices); -void gsk_gl_driver_create_permanent_vao_for_quad (GskGLDriver *driver, - int n_vertices, - const GskQuadVertex *quads, - int *out_vao_id, - int *out_vao_buffer_id); int gsk_gl_driver_create_render_target (GskGLDriver *driver, int texture_id, gboolean add_depth_buffer, @@ -52,8 +42,6 @@ void gsk_gl_driver_bind_source_texture (GskGLDriver *driver int texture_id); void gsk_gl_driver_bind_mask_texture (GskGLDriver *driver, int texture_id); -void gsk_gl_driver_bind_vao (GskGLDriver *driver, - int vao_id); gboolean gsk_gl_driver_bind_render_target (GskGLDriver *driver, int texture_id); @@ -67,11 +55,8 @@ void gsk_gl_driver_init_texture_with_surface (GskGLDriver *driver void gsk_gl_driver_destroy_texture (GskGLDriver *driver, int texture_id); -void gsk_gl_driver_destroy_vao (GskGLDriver *driver, - int vao_id); int gsk_gl_driver_collect_textures (GskGLDriver *driver); -int gsk_gl_driver_collect_vaos (GskGLDriver *driver); G_END_DECLS -- 2.30.2